package br.com.hmm.businesslogic;

import java.util.List;
import java.util.Map;

import br.com.hmm.dao.TransacoesDAO;
import br.com.hmm.entidade.Conta;
import br.com.hmm.entidade.Transacoes;

public class TransacoesService {

	private TransacoesService(){
		
	}
	
	public static List<Transacoes> getTransacoesByConta(Conta conta) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			List<Transacoes> listaTransacoes = tDao.findByConta(conta.getId());
			if(!listaTransacoes.isEmpty()){
				return listaTransacoes;
			}
			
		}catch (NullPointerException e) {
			throw new NullPointerException(e.getLocalizedMessage());
		}
		return null;
	}
	
	public static boolean inserir(Transacoes trn) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			if(tDao.inserir(trn) == true){
				return true;
			}
		}catch (Exception e) {
			throw new Exception( e.getLocalizedMessage());
		}
		return false;
	}
	
	
	public static boolean update(Transacoes trn) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			if(tDao.atualizar(trn) == true){
				return true;
			}
		}catch(Exception e){
			throw new Exception(e.getMessage());
		}
		
		return false;
	}
	
	
	public static boolean delete(Transacoes trn) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			if(tDao.delete(trn) == true){
				return true;
			}
		}catch(Exception e){
			throw new Exception(e.getLocalizedMessage());
		}
		return false;
	}
	
	
	public static List<Transacoes> filtrarTransacoesPorMes(int idConta,int mes) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			List<Transacoes> listaTransacoes = tDao.filtrarPorMes(idConta, mes);
			if(!listaTransacoes.isEmpty()){
				return listaTransacoes;
			}
			
		}catch (Exception e) {
			throw new Exception(e.getLocalizedMessage());
		}
		
		return null;
		
	}
	
	
	public static List<Map> getPagamentosFazer(int idConta) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			List<Map> listaPagamentos = tDao.getPagamanetosFazer(idConta);
			if(!listaPagamentos.isEmpty()){
				return listaPagamentos;
			}
		}catch (NullPointerException e) {
			throw new NullPointerException(e.getLocalizedMessage());
		}
		return null;
	}
	
	
	public static List<Map> getLancamentosFuturos(int idConta) throws Exception{
		try{
			TransacoesDAO tDao = new TransacoesDAO();
			List<Map> listaLancamentos = tDao.getLancamentosFuturos(idConta);
			if(!listaLancamentos.isEmpty()){
				return listaLancamentos;
			}
		}catch (NullPointerException e) {
			throw new NullPointerException(e.getLocalizedMessage());
		}
		return null;
	}
}
